package com.owen.common.utils;

/**
 * 雪花算法
 * 生成id
 */
import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.IdUtil;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

@Component
public class SnowflakeIdWorker {

    @Value("${snowflake.datacenter-id:0}") // 默认值为 0
    private long datacenterId;

    @Value("${snowflake.worker-id:0}") // 默认值为 0
    private long workerId;

    private Snowflake snowflake; // Hutool 提供的雪花算法工具类

    @PostConstruct
    public void init() {
        // 创建 Snowflake 对象，传入数据中心ID和机器ID
        snowflake = IdUtil.createSnowflake(datacenterId, workerId);
    }

    public long nextId() {
        // 生成下一个 ID
        return snowflake.nextId();
    }

    public String nextIdStr() {
        // 生成下一个 ID (String 类型)
        return snowflake.nextIdStr();
    }
}
